// let changingString = "Hello World";
// let changingString: string

const constantString = "Hello World";
// const constantString: "Hello World"

// 文字类型是什么？
    // 一个字符，一个数字都可以是一个类型，这种称之为文字类型
// 文字类型可以干啥？
    // 限定变量只能取设定的一组值
// 怎么使用文字类型？
    // 单独的一个文字类型设置给变量是没有意义的，变量不能只能去取一个值，可以用多个文字类型组成联合类型，设置变量从一组值中取值
    function ad (sex:"男"|"女"){
        console.log(sex);
        
    }
    ad("男")
    function cd (score:60|70|80|90|100){
        console.log(score);
    }
    cd(60)

// 字面推理
    // const req = { url: "https://example.com", method: "GET" }; //这里的req.method会被抽象成string类型
    function handleRequest(url:string,method:'POST'|'GET'){//这里的method需要传入一个post|get的联合类型

    }
// handleRequest(req.url, req.method);

//在类型推断中，ts不会吧对象属性的类型退段位文字类型，因为这样对象的属性就只能取到一个值，ts会把属性的类型设置成大的类型    

// Change 1:
// const req = { url: "https://example.com", method: "GET"};
// // Change 2
// handleRequest(req.url, req.method as "GET");

const req = { url: "https://example.com", method: "GET" } as const;
handleRequest(req.url, req.method);